package com.itheima.edu.info.manager.controller;

import com.itheima.edu.info.manager.domain.Teacher;
import com.itheima.edu.info.manager.service.TeacherService;

import java.util.Scanner;

public class TeacherController {
    //一般 上游管理员 和 输入 都可以一次创建多次使用
    private TeacherService tService = new TeacherService();//上游
    private Scanner sc = new Scanner(System.in);//输入
    String id;//用于各种id接收或传递
    Teacher t = new Teacher();//用于temp老师对象的接收和传递

    //进入老师子系统 - 功能菜单
    public void start(){
        int choice;
        while (true){
            //显示表头
            System.out.println("--------欢迎来到 <老师> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加老师  2.删除老师  3.修改老师  4.查看老师  5.返回");
            //接收输入 直至进入功能
            choice = sc.nextInt();
            switch (choice){
                case 1:
                    addTeacher();
                    break;
                case 2:
                    deleteTeacher();
                    break;
                case 3:
                    updateTeacher();
                    break;
                case 4:
                    viewTeacher();
                    break;
                case 5:
                    System.out.println("返回上一级");
                    return;//跳出输入循环,返回上一级
                default:
                    System.out.println("输入有误,请重新输入!");
            }
        }
    }

    //修改
    public void updateTeacher() {
        Teacher[] ts = tService.viewTeacher();//指挥Service提供数据
        //判断是否为空
        if(isNull(ts))return;
        //输入合理工号
        id = inputTeacherId(true);
        //输入信息
        t = inputTeacherInfo(t);
        //指挥Service修改
        tService.updateTeacher(t);
        //输出结果
        System.out.println("修改成功!");
    }

    //删除
    public void deleteTeacher() {
        //指挥Service提供数据
        Teacher[] ts = tService.viewTeacher();
        //判断
        /*
            null - 不输出
            几个 - 输出
            满 - 输出
         */
        if (isNull(ts))return;
        id = inputTeacherId(true);
        //3 指挥Service删除
        tService.deleteTeacher(id);
        //提示删除成功
        System.out.println("删除成功!");

    }

    //查看
    public void viewTeacher() {
        Teacher[] ts = tService.viewTeacher();//指挥Service提供数据
        //判断
        /*
            null - 不输出
            几个 - 输出
            满 - 输出
         */
        if (isNull(ts))return;
        System.out.println("工号\t\t姓名\t年龄\t生日");//表头
        //打印非空值
        for (int i = 0; i < ts.length; i++) {
            if (ts[i] != null){
                System.out.println(ts[i].getTid() + "\t" + ts[i].getName() + "\t" + ts[i].getAge() + "\t\t" + ts[i].getBirth());
            }
        }

    }

    //添加
    /*
        *注意1-id重复 2-数组超载
    */
    public void addTeacher(){
        //1接收零散信息,判断id是否已经存在
        id = inputTeacherId(false);
        //2封装为完整temp老师对象
        t = inputTeacherInfo(t);
        //3提供给Service
        //4接收Service的结果
        boolean res = tService.addTeacher(t);
        if (res){
            System.out.println("添加成功");
        }else System.out.println("人数已满,添加失败");

    }

    //*优化1 - 在非空库中是否存在输入的id,返回id
    public String inputTeacherId(boolean flag){
        while (true){
            System.out.println("请输入工号");
            //1 接收输入工号
            id = sc.next();
            //2 指挥Service判断是否存在,录入,直到存在
            boolean res = tService.checkId(id);
            if (res != flag){//与希望不符
                if (flag){
                    System.out.println("id不存在,请重新输入");
                }else System.out.println("id已存在,请重新输入");
            }else {//与希望相符,跳出进入下一步
                break;
            }
        }
        return id;
    }
    //优化2 - 输入新的对象信息
    public Teacher inputTeacherInfo(Teacher t){
        t.setTid(id);
        System.out.println("请输入姓名");
        t.setName(sc.next());
        System.out.println("请输入年龄");
        t.setAge(sc.nextInt());
        System.out.println("请输入生日");
        t.setBirth(sc.next());
        return t;
    }
    //优化3 - 判断数据库是否为空
    public boolean isNull(Teacher[] ts){
        if (ts == null){
            System.out.println("无数据,请添加!");
            return true;
        }else return false;
    }
}
